package cn.edu.njuit.springbootfilmreview.service;

import cn.edu.njuit.springbootfilmreview.dto.MovieInfo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.Date;
import java.util.List;

/**
 * @author Administrator
 * @description 针对表【movie_info(影片信息)】的数据库操作Service
 * @createDate 2022-05-23 19:35:25
 */
public interface MovieInfoService extends IService<MovieInfo> {
    /**
     * 查询所有电影信息
     *
     * @return
     */
    List<MovieInfo> getAllMovieInfo();

    /**
     * 根据演员姓名查找电影
     *
     * @param name 演员姓名
     * @return
     */
    List<MovieInfo> getMovieInfoByActorName(String name);


    /**
     * 查询所有电影信息
     *
     * @param currentPage 当前页
     * @param pageSize    多少页的数据
     * @return 分页电影
     */
    IPage<MovieInfo> getPageAllMovieInfo(Integer currentPage, int pageSize);


    /**
     * 根据演员姓名查找电影 分页
     *
     * @param currentPage 当前页
     * @param pageSize    多少页的数据
     * @param actorName   演员姓名
     * @return 分页电影
     */
    IPage<MovieInfo> getPageMovieInfoByActorName(Integer currentPage, int pageSize, String actorName);

    /**
     * 根据电影名查找电影
     *
     * @param currentPage 当前页
     * @param pageSize    多少页的数据
     * @param movieName   电影名称
     * @return 分页电影
     */
    IPage<MovieInfo> getPageMovieInfoByName(Integer currentPage, int pageSize, String movieName);

    /**
     * 根据电影上映时间查找电影
     *
     * @param currentPage      当前页
     * @param pageSize         多少页的数据
     * @param moviePublishDate 发布时间
     * @return 分页电影
     */
    IPage<MovieInfo> getPageMovieInfoByMoviePublishDate(Integer currentPage, int pageSize, String moviePublishDate);

    /**
     * 根据电影年份查询电影
     *
     * @param currentPage 当前页
     * @param pageSize    多少页的数据
     * @param movieYear   电影年份
     * @return 分页电影
     */
    IPage<MovieInfo> getPageMovieInfoByMovieYear(Integer currentPage, int pageSize, Integer movieYear);


    /**
     * 分页获取评分降序电影信息
     *
     * @param currentPage 当前页
     * @param pageSize    多少页的数据
     * @return 分页电影
     */
    IPage<MovieInfo> getPageMovieInfoByRating(Integer currentPage, int pageSize);


    /**
     * 根据id获取电影
     *
     * @param movieId
     * @return 电影信息
     */
    MovieInfo getMovieInfoByMovieId(Long movieId);

    /**
     * 根据电影类型获取电影
     *
     * @param currentPage 当前页
     * @param pageSize    多少页的数据
     * @param movieType   电影类型
     * @return 分页电影
     */
    IPage<MovieInfo> getPageMovieInfoByMovieType(Integer currentPage, int pageSize, String movieType);


    /**
     * 根据电影类型和电影年份获取电影
     *
     * @param currentPage 当前页
     * @param pageSize    数据量
     * @param movieType   电影类型
     * @param movieYear   电影年份
     * @return 分页电影
     */
    IPage<MovieInfo> getMovieInfoByMovieTypeAndMovieYear(Integer currentPage, int pageSize, String movieType, Integer movieYear);


    /**
     * 根据电影类型和电影年份获取电影
     *
     * @param currentPage 当前页
     * @param pageSize    数据量
     * @param movieType   电影类型
     * @param movieYear   电影年份
     * @param movieName   电影名称
     * @return 分页电影
     */
    IPage<MovieInfo> getMovieInfoByMovieTypeAndMovieYearAndKeyWords(Integer currentPage, int pageSize, String movieType, Integer movieYear, String movieName);


}
